package test;

import inpututil.InputUtil;

import java.util.List;
import java.util.Scanner;

//控制器
//该类负责和客户打交道，负责对应的处理请求
public class UserController {
    public static void main(String[] args) {
       UserController userController = new UserController();
       userController.start();

    }
    //开始工作的方法
    public void start(){
        System.out.println("请选择要进行的操作");
        System.out.println("1:注册， 2：登录， 3、修改密码， 4：查看用户列表 ,5:删除用户");
        Scanner scanner = new Scanner(System.in);
        //为什么不直接用scanner。nextInt，因为涉及到重复输入和换行的问题，所以这样来承接，在把当前的内容转换成包装类
        int num = Integer.parseInt(scanner.nextLine());//
        switch (num){
            case 1://如果用户输入的是1，则执行userReg这个方法
                userReg();
                break;
            case 2://如果输入的是2，则执行userLogin这个方法
               userLogin();
               break;
            case 3:
                userUpdate();
                break;
            case 4:
                select();
                break;
            case 5:
                deleteUser();
                break;
        }
    }
    public void deleteUser(){
        UserDelete userDelete = new UserDelete();
        System.out.println("删除");
        UserDelete object = InputUtil.getInputObject(userDelete);
        UserInfoMapper mapper = new UserInfoMapper();
        if (mapper.deleteByUsername(object.getUsername())>0){
            System.out.println("删除成功");
        }else {
            System.out.println("用户不存在 ");
        }

    }
    public void select(){
        System.out.println("查询中");
        UserInfoMapper mapper = new UserInfoMapper();
        List<UserInfo> userInfos = mapper.selectAll();
        for (UserInfo userInfo :userInfos){
            System.out.println(userInfo);
        }
    }
    public void userUpdate(){
        //需求：要求用户输入4个信息
        //根据用户提供信息对数据进行修改
        System.out.println("请输入要修改的信息");
        UserInfo userInfo = InputUtil.getInputObject(new UserInfo());
        UserInfoMapper mapper = new UserInfoMapper();
        if (mapper.updateByUsername(userInfo)>0){
            System.out.println("修改成功");
        }else {
            System.out.println("修改失败");
        }

    }
    //处理用户登录
    public void userLogin(){
//        System.out.println("开始处理用户登录");
//        UserInfo userInfo = InputUtil.getInputObject(new UserInfo());
//        System.out.println(userInfo);
//        UserInfoMapper mapper = new UserInfoMapper();
//        if (mapper.loginByUsername(userInfo.getUsername(), userInfo.getPassword())== false){
//            System.out.println("用户名或密码不对");
//        }else {
//            System.out.println("登录成功");
//        }
        //另外一种方式
        UserLoginDTO userLoginDTO = InputUtil.getInputObject(new UserLoginDTO());
        System.out.println("欢迎登录");
        UserInfoMapper mapper = new UserInfoMapper();
        UserInfo userInfo = mapper.selectByUsername(userLoginDTO.getUsername());
        if (userInfo==null){
            System.out.println("用户名错误");
        }else {
            if (userInfo.getPassword().equals(userLoginDTO.getPassword())){
                System.out.println("登录成功，欢迎" + userInfo.getNickname() + "回来");
            }else {
                System.out.println("密码错误");
            }
        }
    }

    //处理用户注册的方法
    public void userReg(){
        System.out.println("开始处理用户注册");
        UserInfo userInfo = InputUtil.getInputObject(new UserInfo());
        System.out.println(userInfo);

        //将用户输入的信息通过UserInfoMapper类里的方法将数据插入到数据库中
        UserInfoMapper mapper = new UserInfoMapper();
        //判断一下用户输入的用户名是否是数据库中已有的用户名
        if (mapper.selectByUsername(userInfo.getUsername())==null){
            //将用户信息保存到数据库中
            int num = mapper.insert(userInfo);
            if(num>0){
                System.out.println("注册成功");
            }else {
                System.out.println("注册失败");
            }
        }else {
            System.out.println("用户名重复，注册失败");
        }

    }
}
